import UIKit

@available(iOS 13.0, *)
extension QKC where AA :NSDiffableDataSourceSnapshotReference {
    open func numberOfItems_qk_g() -> QKC<AA,YY,ZZ, Int >{
		 self +^ self.value.numberOfItems
	}

    open func numberOfSections_qk_g() -> QKC<AA,YY,ZZ, Int >{
		 self +^ self.value.numberOfSections
	}

    open func sectionIdentifiers_qk_g() -> QKC<AA,YY,ZZ, [Any] >{
		 self +^ self.value.sectionIdentifiers
	}

    open func itemIdentifiers_qk_g() -> QKC<AA,YY,ZZ, [Any] >{
		 self +^ self.value.itemIdentifiers
	}

    open func numberOfItems_qk_f(inSection sectionIdentifier: Any) -> QKC<AA,YY,ZZ,Int>{
		 self +^ self.value.numberOfItems(inSection:sectionIdentifier)
	}

    open func itemIdentifiersInSection_qk_f(withIdentifier sectionIdentifier: Any) -> QKC<AA,YY,ZZ,[Any]>{
		 self +^ self.value.itemIdentifiersInSection(withIdentifier:sectionIdentifier)
	}

    open func sectionIdentifier_qk_f(forSectionContainingItemIdentifier itemIdentifier: Any) -> QKC<AA,YY,ZZ,Any?>{
		 self +^ self.value.sectionIdentifier(forSectionContainingItemIdentifier:itemIdentifier)
	}

    open func index_qk_f(ofItemIdentifier itemIdentifier: Any) -> QKC<AA,YY,ZZ,Int>{
		 self +^ self.value.index(ofItemIdentifier:itemIdentifier)
	}

    open func index_qk_f(ofSectionIdentifier sectionIdentifier: Any) -> QKC<AA,YY,ZZ,Int>{
		 self +^ self.value.index(ofSectionIdentifier:sectionIdentifier)
	}

    open func appendItems_qk_f(withIdentifiers identifiers: [Any]) -> QKC<AA,YY,ZZ, [Any]>{
		 self +^ self.value.appendItems(withIdentifiers:identifiers) +^ identifiers
	}

    open func appendItems_qk_f(withIdentifiers identifiers: [Any], intoSectionWithIdentifier sectionIdentifier: Any) -> QKC<AA,YY,ZZ, [Any]>{
		 self +^ self.value.appendItems(withIdentifiers:identifiers, intoSectionWithIdentifier:sectionIdentifier) +^ identifiers
	}

    open func insertItems_qk_f(withIdentifiers identifiers: [Any], beforeItemWithIdentifier itemIdentifier: Any) -> QKC<AA,YY,ZZ, [Any]>{
		 self +^ self.value.insertItems(withIdentifiers:identifiers, beforeItemWithIdentifier:itemIdentifier) +^ identifiers
	}

    open func insertItems_qk_f(withIdentifiers identifiers: [Any], afterItemWithIdentifier itemIdentifier: Any) -> QKC<AA,YY,ZZ, [Any]>{
		 self +^ self.value.insertItems(withIdentifiers:identifiers, afterItemWithIdentifier:itemIdentifier) +^ identifiers
	}

    open func deleteItems_qk_f(withIdentifiers identifiers: [Any]) -> QKC<AA,YY,ZZ, [Any]>{
		 self +^ self.value.deleteItems(withIdentifiers:identifiers) +^ identifiers
	}

    open func deleteAllItems_qk_f() -> QKC<AA,YY,ZZ,Void>{
		 self +^ self.value.deleteAllItems()
	}

    open func moveItem_qk_f(withIdentifier fromIdentifier: Any, beforeItemWithIdentifier toIdentifier: Any) -> QKC<AA,YY,ZZ, Any>{
		 self +^ self.value.moveItem(withIdentifier:fromIdentifier, beforeItemWithIdentifier:toIdentifier) +^ fromIdentifier
	}

    open func moveItem_qk_f(withIdentifier fromIdentifier: Any, afterItemWithIdentifier toIdentifier: Any) -> QKC<AA,YY,ZZ, Any>{
		 self +^ self.value.moveItem(withIdentifier:fromIdentifier, afterItemWithIdentifier:toIdentifier) +^ fromIdentifier
	}

    open func reloadItems_qk_f(withIdentifiers identifiers: [Any]) -> QKC<AA,YY,ZZ, [Any]>{
		 self +^ self.value.reloadItems(withIdentifiers:identifiers) +^ identifiers
	}

    open func appendSections_qk_f(withIdentifiers sectionIdentifiers: [Any]) -> QKC<AA,YY,ZZ, [Any]>{
		 self +^ self.value.appendSections(withIdentifiers:sectionIdentifiers) +^ sectionIdentifiers
	}

    open func insertSections_qk_f(withIdentifiers sectionIdentifiers: [Any], beforeSectionWithIdentifier toSectionIdentifier: Any) -> QKC<AA,YY,ZZ, [Any]>{
		 self +^ self.value.insertSections(withIdentifiers:sectionIdentifiers, beforeSectionWithIdentifier:toSectionIdentifier) +^ sectionIdentifiers
	}

    open func insertSections_qk_f(withIdentifiers sectionIdentifiers: [Any], afterSectionWithIdentifier toSectionIdentifier: Any) -> QKC<AA,YY,ZZ, [Any]>{
		 self +^ self.value.insertSections(withIdentifiers:sectionIdentifiers, afterSectionWithIdentifier:toSectionIdentifier) +^ sectionIdentifiers
	}

    open func deleteSections_qk_f(withIdentifiers sectionIdentifiers: [Any]) -> QKC<AA,YY,ZZ, [Any]>{
		 self +^ self.value.deleteSections(withIdentifiers:sectionIdentifiers) +^ sectionIdentifiers
	}

    open func moveSection_qk_f(withIdentifier fromSectionIdentifier: Any, beforeSectionWithIdentifier toSectionIdentifier: Any) -> QKC<AA,YY,ZZ, Any>{
		 self +^ self.value.moveSection(withIdentifier:fromSectionIdentifier, beforeSectionWithIdentifier:toSectionIdentifier) +^ fromSectionIdentifier
	}

    open func moveSection_qk_f(withIdentifier fromSectionIdentifier: Any, afterSectionWithIdentifier toSectionIdentifier: Any) -> QKC<AA,YY,ZZ, Any>{
		 self +^ self.value.moveSection(withIdentifier:fromSectionIdentifier, afterSectionWithIdentifier:toSectionIdentifier) +^ fromSectionIdentifier
	}

    open func reloadSections_qk_f(withIdentifiers sectionIdentifiers: [Any]) -> QKC<AA,YY,ZZ, [Any]>{
		 self +^ self.value.reloadSections(withIdentifiers:sectionIdentifiers) +^ sectionIdentifiers
	}

}

@available(iOS 13.0, *)
extension QKC where AA :UICollectionViewDiffableDataSourceReference {
    open func supplementaryViewProvider_qk_s(_ supplementaryViewProvider:  UICollectionViewDiffableDataSourceReferenceSupplementaryViewProvider?) -> QKC<AA,YY,ZZ, UICollectionViewDiffableDataSourceReferenceSupplementaryViewProvider?>{
		return link(next: supplementaryViewProvider).then_QK { $0.value.supplementaryViewProvider = supplementaryViewProvider }
	}
    open func supplementaryViewProvider_qk_g() -> QKC<AA,YY,ZZ, UICollectionViewDiffableDataSourceReferenceSupplementaryViewProvider?>{
		 self +^ self.value.supplementaryViewProvider
	}

    open func snapshot_qk_f() -> QKC<AA,YY,ZZ,NSDiffableDataSourceSnapshotReference>{
		 self +^ self.value.snapshot()
	}

    open func applySnapshot_qk_f(_ snapshot: NSDiffableDataSourceSnapshotReference, animatingDifferences: Bool) -> QKC<AA,YY,ZZ, NSDiffableDataSourceSnapshotReference>{
		 self +^ self.value.applySnapshot(snapshot, animatingDifferences:animatingDifferences) +^ snapshot
	}

    open func applySnapshot_qk_f(_ snapshot: NSDiffableDataSourceSnapshotReference, animatingDifferences: Bool, completion: (() -> Void)? = nil) -> QKC<AA,YY,ZZ, NSDiffableDataSourceSnapshotReference>{
		 self +^ self.value.applySnapshot(snapshot, animatingDifferences:animatingDifferences, completion:completion) +^ snapshot
	}

    open func itemIdentifier_qk_f(for indexPath: IndexPath) -> QKC<AA,YY,ZZ,Any?>{
		 self +^ self.value.itemIdentifier(for:indexPath)
	}

    open func indexPath_qk_f(forItemIdentifier identifier: Any) -> QKC<AA,YY,ZZ,IndexPath?>{
		 self +^ self.value.indexPath(forItemIdentifier:identifier)
	}

}

@available(iOS 13.0, *)
extension QKC where AA :UITableViewDiffableDataSourceReference {
    open func defaultRowAnimation_qk_s(_ defaultRowAnimation:  UITableView.RowAnimation) -> QKC<AA,YY,ZZ, UITableView.RowAnimation>{
		return link(next: defaultRowAnimation).then_QK { $0.value.defaultRowAnimation = defaultRowAnimation }
	}
    open func defaultRowAnimation_qk_g() -> QKC<AA,YY,ZZ, UITableView.RowAnimation>{
		 self +^ self.value.defaultRowAnimation
	}

    open func snapshot_qk_f() -> QKC<AA,YY,ZZ,NSDiffableDataSourceSnapshotReference>{
		 self +^ self.value.snapshot()
	}

    open func applySnapshot_qk_f(_ snapshot: NSDiffableDataSourceSnapshotReference, animatingDifferences: Bool) -> QKC<AA,YY,ZZ, NSDiffableDataSourceSnapshotReference>{
		 self +^ self.value.applySnapshot(snapshot, animatingDifferences:animatingDifferences) +^ snapshot
	}

    open func applySnapshot_qk_f(_ snapshot: NSDiffableDataSourceSnapshotReference, animatingDifferences: Bool, completion: (() -> Void)? = nil) -> QKC<AA,YY,ZZ, NSDiffableDataSourceSnapshotReference>{
		 self +^ self.value.applySnapshot(snapshot, animatingDifferences:animatingDifferences, completion:completion) +^ snapshot
	}

    open func itemIdentifier_qk_f(for indexPath: IndexPath) -> QKC<AA,YY,ZZ,Any?>{
		 self +^ self.value.itemIdentifier(for:indexPath)
	}

    open func indexPath_qk_f(forItemIdentifier identifier: Any) -> QKC<AA,YY,ZZ,IndexPath?>{
		 self +^ self.value.indexPath(forItemIdentifier:identifier)
	}

}

